package io.kiki.sba.registry.server.clientInterface.bootstrap;

import io.kiki.sba.registry.server.shared.config.ServerShareConfig;

import java.util.Collection;
import java.util.Set;

/**
 * SessionServerConfig Interface
 */
public interface Config extends ServerShareConfig {

    int getServerPort();

    int getSyncSessionPort();

    int getConsolePort();

    int getSyncSessionIOLowWaterMark();

    int getSyncSessionIOHighWaterMark();

    int getClientIOLowWaterMark();

    int getClientIOHighWaterMark();

    int getMetaServerPort();

    int getDataServerPort();

    int getDataServerNotifyPort();

    int getHttpServerPort();

    int getSchedulerHeartbeatIntervalSecs();

    int getScanSubscriberIntervalMillis();

    int getClientNodeExchangeTimeoutMillis();

    int getClientNodePushConcurrencyLevel();

    int getDataNodeExchangeTimeoutMillis();

    int getDataNodeExchangeForFetchDatumTimeoutMillis();

    int getMetaNodeExchangeTimeoutMillis();

    String getSessionServerRegion();

    Set<String> getLocalDataCenterZones();

    String getClientCell(String clientCell);

    boolean isLocalDataCenter(String dataCenter);

    String getDataCenter();

    int getAccessDataExecutorPoolSize();

    int getAccessDataExecutorQueueSize();

    int getAccessSubDataExecutorPoolSize();

    int getAccessSubDataExecutorQueueSize();

    int getConsoleExecutorPoolSize();

    int getConsoleExecutorQueueSize();

    int getDataChangeExecutorPoolSize();

    int getDataChangeExecutorQueueSize();

    int getDataChangeDebouncingMillis();

    int getDataChangeMaxDebouncingMillis();

    int getPushTaskExecutorPoolSize();

    int getPushTaskExecutorQueueSize();

    int getPushTaskBufferBucketSize();

    int getPushTaskRetryTimes();

    int getPushDataTaskRetryFirstDelayMillis();

    int getPushDataTaskRetryIncrementDelayMillis();

    int getPushDataTaskDebouncingMillis();

    int getDataChangeFetchTaskWorkerSize();

    int getSubscriberRegisterTaskWorkerSize();

    int getWatchPushTaskWorkerSize();

    int getWatchPushTaskMaxBufferSize();

    boolean isInvalidForeverZone(String zoneId);

    boolean isInvalidIgnored(String dataId);

    int getDataNodeRetryQueueSize();

    int getDataNodeRetryTimes();

    int getDataNodeRetryBackoffMillis();

    int getDataNodeExecutorWorkerSize();

    int getDataNodeExecutorQueueSize();

    int getDataNodeMaxBatchSize();

    double getAccessLimitRate();

    int getDataClientConnNum();

    int getDataNotifyClientConnNum();

    int getSessionSchedulerPoolSize();

    int getSlotSyncPublisherMaxNum();

    Collection<String> getMetaServerAddresses();

    int getSlotSyncMaxBufferSize();

    int getSlotSyncWorkerSize();

    int getMetaNodeBufferSize();

    int getMetaNodeWorkerSize();

    int getAccessMetadataMaxBufferSize();

    int getAccessMetadataWorkerSize();

    int getCacheDigestIntervalMinutes();

    int getCacheCountIntervalSecs();

    int getCacheDatumMaxWeight();

    int getCacheDatumExpireSecs();

    int getHeartbeatCacheCheckerInitialDelaySecs();

    int getHeartbeatCacheCheckerSecs();

    int getRevisionHeartbeatInitialDelayMinutes();

    int getRevisionHeartbeatMinutes();

    int getClientManagerIntervalMillis();

    int getClientOpenIntervalSecs();

    int getPushCircuitBreakerThreshold();

    int getPushCircuitBreakerSilenceMillis();

    int getSkipPushEmptySilentMillis();

    int getClientManagerAddressIntervalMillis();

    int getWatchConfigFetchBatchSize();

    int getWatchConfigFetchIntervalMillis();

    int getWatchConfigFetchLeaseSecs();

    boolean isWatchConfigEnable();

    int getScanWatcherIntervalMillis();

    boolean isGracefulShutdown();

    int getPushAddressCircuitBreakerThreshold();

    int getPushConsecutiveSuccess();

    int getMetadataRegisterExecutorPoolSize();

    int getMetadataRegisterExecutorQueueSize();

    int getScanExecutorPoolSize();

    int getScanExecutorQueueSize();

    long getScanTimeoutMills();
}
